home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / PBLIB1 / UNITS / PBEXEC.PAS < prev    next >
Pascal/Delphi Source File  |  1994-05-03  |  7KB  |  252 lines

  1. {SECTION ..PbEXEC }
  2. UNIT PbEXEC;
  3.  
  4. INTERFACE
  5.  
  6. uses DOS, PbMISC, PbDATA, PbPARMS;
  7.  
  8. {
  9. Description:  Interface to PKZIP, TPC and Various Command.com functions
  10.  
  11. Author      : Howard Richoux
  12. Date        :  8/2/90
  13. Last revised: 12/15/93 hnr trivial re-formatting
  14.                2/18/94 hnr new libraries
  15. Application : IBM PC and compatibles, Turbo Pascal 7.0
  16. Status      : Placed in the Public Domain by HNR Software 2/18/94
  17. Published in: none
  18. }
  19.  
  20.  
  21.  
  22. var ZIPError          : integer;
  23.  
  24.  
  25.  
  26. Procedure CleanUpDir(WorkDir, FileMask : string);
  27.                    {[FILE] Erases files based on a mask }
  28.  
  29. Procedure DisplayZIPError;
  30.                    {[EXEC] PKZip interface }
  31.  
  32. Procedure DefaultCleanup(WorkDir : string);
  33.                    {[FILE] Erases files *.BAK, *.MAP, temp*.*}
  34.  
  35.  
  36. Procedure ParmCleanup(WorkDir : string);
  37.                    {[FILE] Erases files based on param file}
  38.  
  39. Procedure ShowEraseStats;
  40.                    {[FILE] shows count & bytes recovered}
  41.  
  42. Function  UnZIPFile( op, ZIPName, DPath, fspec : string; qt : boolean) : boolean;
  43.                    {[EXEC] Uses PKUnZip to de-archive files }
  44.  
  45. Function  ZIPFile( op, ZIPName, fspec  : string; qt : boolean) : boolean;
  46.                    {[EXEC] Uses PKZip to archive files }
  47.  
  48.  
  49.  
  50. {SECTION .zImplementation }
  51. IMPLEMENTATION
  52.  
  53. {-}
  54.  
  55. var  ZIPDefaultop      : string[16];
  56. var  ZIPFileName       : string[50];
  57. var  ZIPDPath          : string[50];
  58.  
  59. var  EraseCount        : Word;        { files erased }
  60.      EraseSizeK        : LongInt;     { kilobytes released by erasing files }
  61.  
  62.  
  63. {SECTION  CleanUpDir }
  64. Procedure CleanUpFile(WorkDir : string; SR : searchRec);
  65. var l    : longint;
  66.     begin
  67.     with SR do
  68.         begin
  69.         l := size div 512;
  70.         if (attr and 31) = 0 then
  71.             begin
  72.             if l = 0 then l := 1;
  73.             EraseSizeK := EraseSizeK + l;
  74.             writeln('         Removing: ',(AddBackSlash(WorkDir)+name),
  75.                     '   ',l div 2,'k');
  76.             EraseFile(AddBackSlash(WorkDir)+name);
  77.             inc(EraseCount);
  78.             end
  79.         else writeln(' ??  ',(AddBackSlash(WorkDir)+name),'   ',l div 2,'k',
  80.                      '  attr: ',attr);
  81.         end;
  82.     end;
  83.  
  84.  
  85. Procedure CleanUpDir(WorkDir, FileMask : string);
  86. var Frec : SearchRec;
  87.     s    : string[64];
  88.     begin
  89.     s := '';
  90.     findfirst(AddBackSlash(WorkDir)+FileMask, anyfile, Frec);
  91.     while doserror = 0 do
  92.         begin
  93.         CleanUpFile(WorkDir, Frec);
  94.         findnext(Frec);
  95.         end;
  96.     end;
  97.  
  98.  
  99. {SECTION  DefaultCleanup }
  100. Procedure DefaultCleanup(WorkDir : string);
  101.     begin
  102.     CleanUpDir(WorkDir,'*.BAK');
  103.     CleanUpDir(WorkDir,'*.MAP');
  104.     CleanUpDir(WorkDir,'TEMP*.*');
  105.     end;
  106.  
  107.  
  108. {SECTION  DisplayZIPError }
  109. Procedure DisplayZIPError;
  110.     begin
  111.     case ziperror of
  112.         0       : writeln('no error');
  113.         1..90   : writeln(ziperror:3,' Exec DOS error ');
  114.         98      : writeln(ziperror:3,' requested file not produced ');
  115.         99      : writeln(ziperror:3,' archive file not found');
  116.         end;
  117.     end;
  118.  
  119.  
  120. {SECTION  PbEXECInit }
  121. Procedure PbEXECInit;
  122.      begin
  123.      ZIPError        := 0;
  124.      ZIPDefaultop    := '-n';
  125.      ZIPFileName     := 'NOFILE.ZIP';
  126.      ZIPDPath        := '';
  127.      EraseCount  := 0;
  128.      EraseSizeK  := 0;
  129.      end;
  130.  
  131.  
  132. {SECTION  ParmCleanup }
  133. Procedure ParmCleanupItem(Workdir : string; Item : integer);
  134. var itemstr : string[10];
  135.     parmname,maskname   : string[40];
  136.     begin
  137.     str(item:1,itemstr);
  138.     parmname := 'CLEANUP' + itemstr;
  139.     if GetParmStr(parmname) <> '' then
  140.          begin
  141.          maskname := GetParmStr(parmname);
  142.          writeln('  Cleaning up ',maskname);
  143.          CleanUpDir(WorkDir,maskname);
  144.          end;
  145.     end;
  146.  
  147.  
  148. Procedure ParmCleanup(WorkDir : string);
  149. var i : integer;
  150.     begin
  151.     writeln('Cleaning up   ',WorkDir);
  152.     for i := 1 to 10 do
  153.         ParmCleanUpItem(WorkDir,i);
  154.     end;
  155.  
  156.  
  157.  
  158.  
  159. {SECTION  ShowEraseStats }
  160. Procedure ShowEraseStats;
  161.     {-Show statistics at the end of run}
  162.     begin
  163.     WriteLn('Files Erased: ', EraseCount,
  164.             '  bytes used: ',EraseSizeK div 2,'k');
  165.     end;
  166.  
  167.  
  168. {SECTION  UnZIPFile }
  169. Function  UnZIPFile( op, ZIPName, DPath, fspec : string; qt : boolean) : boolean;
  170. var s,zname     : string;
  171.     i,j         : integer;
  172.     begin
  173.     ZIPError       := 0;
  174.     UnZIPFile := true;
  175.     s := 'PKUNZIP ';
  176.     if op <> '' then  s := s + op
  177.     else                   s := s + ZIPDefaultop;
  178.  
  179.     if ZIPName <> '' then  zname := ZIPName
  180.     else                   zname := ZIPFileName;
  181.     if not FileExists(zname) then
  182.         begin
  183.         writeln('zname: [',zname,']');
  184.         UnZIPFile := false;
  185.         ZIPError := 99;
  186.         exit;
  187.         end;
  188.     s := s + ' ' + zname;
  189.  
  190.     if DPath <> '' then s := s + ' ' + DPath
  191.     else                   s := s + ' ' + ZIPDPath;
  192.     s := s + ' ' + fspec;
  193.     if qt then s := s + ' >NUL ';
  194.     ZIPError := ExecuteCommand(s);
  195.     if ZIPError > 0 then
  196.          begin
  197.          writeln('PKUNZIP start failed ',ZIPError,' [',s,']');
  198.          UnZIPFile := false;
  199.          end
  200.     else begin
  201.          i := pos('*',fspec);
  202.          j := pos('?',fspec);
  203.          if (i = 0) and (j = 0) then
  204.              begin
  205.              if not FileExists(DPath + fspec) then
  206.                   begin
  207.                   UnZIPFile := false;
  208.                   ZIPError := 98;
  209.                   end;
  210.              end;
  211.          end;
  212.     end;
  213.  
  214.  
  215.  
  216. {SECTION  ZIPFile }
  217. Function  ZIPFile( op, ZIPName, fspec  : string; qt : boolean) : boolean;
  218. var s,zname     : string;
  219.     i,j         : integer;
  220.     begin
  221.     ZIPError       := 0;
  222.     ZIPFile := true;
  223.     s := 'PKZIP ';
  224.     if op <> '' then  s := s + op
  225.     else                   s := s + ZIPDefaultop;
  226.  
  227.     if ZIPName <> '' then  zname := ZIPName
  228.     else                   zname := ZIPFileName;
  229.     s := s + ' ' + zname;
  230.     s := s + ' ' + fspec;
  231.     if qt then s := s + ' >NUL ';
  232.     ZIPError := ExecuteCommand(s);
  233.     if ZIPError > 0 then
  234.          begin
  235.          writeln('PKZIP start failed ',ZIPError,' [',s,']');
  236.          ZIPFile := false;
  237.          end
  238.     else begin
  239.          if not FileExists(ZIPname+'.ZIP') then
  240.               begin
  241.               ZIPFile := false;
  242.               ZIPError := 98;
  243.               end;
  244.          end;
  245.     end;
  246.  
  247.  
  248. {SECTION zzInitialization  }
  249.      begin {Initialization}
  250.      PbEXECInit;
  251.      end.
  252.